package lib.util;

import lib.Dao.TokenDao;
import lib.servlet.AuthUtil;
import org.apache.commons.lang.StringUtils;

import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;



public class QRcode {
    //用于获取带参数的二维码
    private static  String url1 = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=";
    //换取二维码url
    private static  final  String url2 = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=";


    /**
     * http请求方式: POST
     * URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
     * POST数据格式：json
     * 此方法用于获取带参数的二维码 ticket
     * str : str 请按照指定格式拼接字符串 -------------------------- 待确定
     * @return
     */
    public static String getQrUrl(String str){
        TokenDao tokenDao = new TokenDao();
        // 获取token
        String token = null;
        try {
            token = tokenDao.gettoken();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        if(StringUtils.isEmpty(str) || token==null){ return null; }
        if(str.length()<64 && str.length()>0){
            //临时字符二维码url
            String  url =  url1 + token;
            //二维码参数，以及过期时间
            String data = "{\"expire_seconds\": 2591000, \"action_name\": \"QR_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\":\""+ str +"\"}}}";
            String result = HttpUtil.sendHttpByPost(url, data);
             if (!StringUtils.isEmpty(result)){
                JSONObject jsonObject = JSONObject.parseObject(result);
                String qrurl = jsonObject.getString("url");
                return  qrurl;
            }
        }else{
            try {
                throw new Exception("scene_str:字符串类型，长度限制为1到64");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    /**
     * 此方法通过 ticket换取二维码 , 返回一个二维码 url
     * 获取二维码ticket后，开发者可用ticket换取二维码图片。请注意，本接口无须登录态即可调用。
     * 请求说明
     * HTTP GET请求（请使用https协议）https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
     * @param data
     * @return
     */
    public static String getTicket(String data) {
        String url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket="+data;
        String result = HttpUtil.sendHttpByGet(url);
        return result;
    }
}

